package com.easylinkin.linkappapi.asset.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.easylinkin.linkappapi.common.translate.CodeI18n;
import com.easylinkin.linkappapi.device.entity.Device;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import java.util.Date;
import java.util.List;


/**
 * <p>
 * 设备资产表，关联两张表 关联1  资产表-资产设备表 关联2  资产表-资产用户表
 *
 * </p>
 *
 * @author XuGuoQing
 * @since 2020-04-15
 */
@CodeI18n
@Data
@TableName("linkapp_asset")
public class Asset extends Model<Asset> {


    /**
     * 资产编号
     */


    @TableId
    @Length(max = 32, message = "id 超长")
    private String id;

    /**
     * 资产名称
     */
    @TableField("asset_name")
    private String assetName;

    /**
     * 资产编号
     */
    @TableField("asset_no")
    private String assetNo;

    /**
     * 资产描述
     */
    @TableField("asset_desc")
    private String assetDesc;

    /**
     * 资产的区域id
     */
    @TableField("asset_area_id")
    private String assetAreaId;

    /**
     * 租户ID
     */
    @TableField("tenant_id")
    private String tenantId;

    /**
     * 资产的空间名称  这里是多对一的的关系
     */
    @TableField(exist = false)
    private String assetSpaceName;

    /**
     * 区域名称
     */
    @TableField(exist = false)
    private String areaName;


    /**
     * 资产的空间位置
     */
    @TableField(exist = false)
    private String assetSpacePath;


    /**
     * 多对多的关系  管理者的列表
     */
    @TableField(exist = false)
    private List<String> managerNameList;

    /**
     * 管理者id 查询使用
     */
    @TableField(exist = false)
    private String  managerId;


    /**
     * 管理者的id ,查询使用
     */
    @TableField(exist = false)
    private List<String> managerIdList;
    /**
     * 多对对的关系    设备列表
     */

    @TableField(exist = false)
    private List<Device> deviceList;

    /**
     * 多对对的关系    新增绑定设备列表
     */

    @TableField(exist = false)
    private List<Device> addDeviceList;

    /**
     * 多对对的关系    删除设备绑定列表
     */

    @TableField(exist = false)
    private List<Device> deleteDeviceList;

    @TableField(exist = false)
    private String areaPath;


    @TableField(exist = false)
    private String spaceId;

    /**
     * 资产创建者
     */
    @TableField("creator")
    private String creator;

    /**
     * 资产的创建时间
     */
    @TableField("create_time")
    private Date createTime;


    @TableField("modifier")
    private String modifier;

    /**
     * 资产的修改时间
     */
    @TableField("modify_time")
    private Date modifyTime;


    /**
     * 是否删除字段 0:已删; 1:存在
     */
    @TableField("delete_state")
    @TableLogic(value = "1", delval = "0")
    private Integer deleteState = 1;

    /**
     * 纬度
     */
    @Length(max = 32, message = "纬度超长")
    private String latitude;

    /**
     * 经度
     */
    @Length(max = 32, message = "经度超长")
    private String longitude;

    /**
     * 室内位置
     */
    @TableField("indoor_location")
    @Length(max = 128, message = "室内位置")
    private String indoorLocation;

}
